package com.deyuanyun.pic.settings.mapper.prvlg.dao;

import com.deyuanyun.pic.settings.domain.prvlg.Menu;
import com.deyuanyun.pic.settings.domain.prvlg.Role;
import com.deyuanyun.pic.settings.domain.prvlg.RoleExample;
import com.github.pagehelper.Page;

import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface RoleDao {
    int countRoleUser(Map map);

    int delRoleMenu(Map map);

    int countRoleMenu(Map map);

    /**
     * 创建人:Bill.li
     * 时    间:2015.12.17 15:35
     * 作    用:功能菜单管理页面列表获取!
     * **/
    Page<HashMap<String,Object>> getMenus(HashMap<String, Object> map);
    /**
     * 创建人:Bill.li
     * 时    间:2015.12.17 16:23
     * 作    用:功能菜单管理页查询!
     * **/

  /*  HashMap<String, Object> updateMenuState(HashMap<String, Object> map);*/

    HashMap<String,Object> getOneMenu(HashMap<String, Object> map);
    /**
     * 创建人:Bill.li
     * 作    用:角色管理页列表查询!
     * **/
    Page<HashMap<String,Object>> getRoles(HashMap<String, Object> param);
    /**
     * 创建人:Bill.li
     * 作    用:角色管理页查询!
     * **/
    String getOneRole(Map<String, Object> map);

    /**
     * 创建人:Bill.li
     * 作    用:角色管理状态修改!
     * **/
    int updateState(HashMap map);
    /**
     * 创建人:Bill.li
     * 作    用:角色管理角色删除!
     * **/
    Boolean delRole(HashMap map);

    Boolean insertRole(HashMap param) throws InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException;

    Boolean updateRole(Role param);

    Boolean updateMenu(Menu param);

    boolean updateMenuState(HashMap map);

    void unauthorizedRole(Map<String, Object> map);


    List getAllMenus(Map<String, Object> map);
    List<String> getMenuId(String roleId);
    void insertSelective(Role role);

    void saveunauthorized(Map map);

    /**
     * 根据 角色id 删除 角色的授权信息（角色与菜单之间的关系）
     *
     * @param roleId
     * @return
     */
    int deleteAuthorize(String roleId);
}